﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using FrbaCommerce.Clases;

namespace FrbaCommerce.Abm_Cliente
{
    public partial class ListadoCliente : Form
    {
        Usuario user;
        bool modo;
        public ListadoCliente(bool modo, Usuario user)
        {
            this.user = user;
            this.modo = modo;
            InitializeComponent();
        }
        private void ListadoCliente_Load(object sender, EventArgs e)
        {
            TipoDocumento tipo = new TipoDocumento();
            tipo.cargarCombo(cmbTipo);
            this.dgvCliente.SelectionChanged += new EventHandler(dgvCliente_SelectionChanged);
            if (modo)
            {
                btnBaja.Enabled = false;
                btnModificar.Enabled = true;
            }
            else
            {
                btnModificar.Enabled = false;
                btnBaja.Enabled = true;
            }
        }

        void dgvCliente_SelectionChanged(object sender, EventArgs e)
        {
            if (this.dgvCliente.SelectedCells.Count > 0)
            {
                Cliente_Dir_Doc cliente = (Cliente_Dir_Doc)this.dgvCliente.SelectedCells[0].OwningRow.DataBoundItem;
                if (cliente.Habilitado)
                {
                    this.btnBaja.Text = "Eliminar";
                }
                else
                {
                    this.btnBaja.Text = "Activar";
                }
            }
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            Cliente_Dir_Doc buscarCliente = new Cliente_Dir_Doc();
            this.dgvCliente.DataSource = buscarCliente.GetClientes(txtNombre.Text, txtApellido.Text, cmbTipo.Text, txtDni.Text, txtEmail.Text);
            this.dgvCliente.Columns[0].Visible = false;
            this.dgvCliente.Columns[1].Visible = false;           
        }       

        private void btnModificar_Click(object sender, EventArgs e)
        {
            if (this.dgvCliente.SelectedCells.Count > 0)
            {
                Cliente_Dir_Doc cliente = (Cliente_Dir_Doc)this.dgvCliente.SelectedCells[0].OwningRow.DataBoundItem;
                Cliente cliente_modif = new Cliente();
                cliente_modif = cliente_modif.BuscarCliente(cliente.id);
                AbmCliente abmCliente = new AbmCliente(cliente_modif, this.user);
                abmCliente.FormClosed += new FormClosedEventHandler(abmCliente_FormClosed);                
                abmCliente.ShowDialog();
            }
            else
            {
                MessageBox.Show("Seleccione un cliente para modificar.\n", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private void CargarClientes()
        {           
            Cliente_Dir_Doc cliente = new Cliente_Dir_Doc();
            TipoDocumento tipo = new TipoDocumento();
            tipo.cargarCombo(cmbTipo);
            LimpiarCampos();
            this.dgvCliente.DataSource = cliente.GetClientes(txtNombre.Text, txtApellido.Text, cmbTipo.Text, txtDni.Text, txtEmail.Text);            
        
        }

        void abmCliente_FormClosed(object sender, FormClosedEventArgs e)
        {
            this.CargarClientes();
            
        }

        private void btnBaja_Click(object sender, EventArgs e)
        {
            if (this.dgvCliente.SelectedCells.Count > 0)
            {
                Cliente_Dir_Doc cliente = (Cliente_Dir_Doc)this.dgvCliente.SelectedCells[0].OwningRow.DataBoundItem;
                Cliente cliente_modif = new Cliente();
                cliente_modif = cliente_modif.BuscarCliente(cliente.id);
                if (cliente_modif.Habilitado && MessageBox.Show("¿Está seguro de que desea dar de baja al cliente?\n", "Advertencia", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
                {
                    return;
                }
                cliente_modif.Habilitado = !cliente_modif.Habilitado;
                cliente_modif.Baja(cliente_modif);
                this.CargarClientes();                  
              
            }
            else
            {
                MessageBox.Show("Seleccione un cliente para modificar.\n", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void lblLimpiarCampos_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            LimpiarCampos();
            
        }
        private void LimpiarCampos()
        {
            txtApellido.Text = String.Empty;
            txtDni.Text = String.Empty;
            txtEmail.Text = String.Empty;
            txtNombre.Text = String.Empty;
            TipoDocumento tipo = new TipoDocumento();
            tipo.cargarCombo(cmbTipo);            
        }
    }
}
